home *** CD-ROM | disk | FTP | other *** search
- :--- vsync proc
- VSYNC割り込みが起きるたびにこのプロシージャを呼び出します
- この中では,マウスの移動量をチェックして移動が認められるならば新しい位置
- にマウスカーソルを描いて,マウスボタンの状態をmos_buttonに格納します
- ;--- draw_mouse proc
- ( new_mos_x_pos, new_mos_y_pos )の位置にある背景をバッファ( back_image )
- に転送してその位置にマウスカーソルを描きます
- ;--- erase_mouse proc
- バッファ( back_image )に転送した背景を( old_mos_x_pos, oldnew_mos_y_pos )
- に戻します
- ;--- mos_motion proc
- マウスの相対移動量を読み取ります
- ;--- mos_position proc
- マウスカーソルの位置を設定します
- ;--- mos_awake proc
- マウスカーソルを表示状態にします
- ;--- mos_sleep proc
- マウスカーソルを非表示状態にします
- ;--- exit proc
- DOSに戻ります
- ;--- function_1 proc
- 上方向の猫の手スクロ~ル。マウスをクリックしたままスクロ~ル
- ;--- function_2 proc
- 下方向の猫の手スクロ~ル
- ;--- function_3 proc
- 上方向の引っかきスクロ~ル。マウスを途中で放すスクロ~ル
- ;--- function_4 proc
- 下方向の引っかきスクロ~ル
- ;--- h_scroll proc
- 横スクロ~ルさせます。1回のスクロ~ルで 8ドットスクロ~ルさせます
- ;--- menu proc
- マウスの押された位置によって登録されたプロシージャを呼び出します
- ;--- item_range proc
- マウスの押された位置が有効であったかどうか判断します
- ;--- draw_menu proc
- 登録されているアイテムの名前を表示します
- ;--- reverse_item proc
- 選択されたアイテムの名前を反転表示します
- ;--- entry_1 proc
- ディスクブラウザを表示します
- ;--- drive_down proc
- ドライブナンバを 1つ減らします
- ;--- drive_up proc
- ドライブナンバを 1つ増やします
- ;--- put_new_drive proc
- ドライブナンバを表示します
- ;--- clear_file_field proc
- ファイル名が表示される部分をクリアします
- ;--- get_filename proc
- ディレクトリ上のファイルを読み取ります
- ;--- find_file proc
- ディレクトリ上のファイルを読み取ります
- ;--- file_sort proc
- ファイル名をソートします。最初にディレクトリとファイルにわけ,次に
- ディレクトリ,ファイルごとにバブルソートをします
- ;--- compare proc
- 実際にソートしている部分です
- ;--- file_up proc
- 次のファイルを表示します
- ;--- file_down proc
- 前のファイルを表示します
- ;--- put_filename proc
- ディレクトリ上のファイルを表示します
- ;--- file_info proc
- ファイルアトリビュート,ファイルサイズ,ファイル名をバッファに格納します
- ;--- put_dir proc
- ディレクトリを表示します
- ;--- select_file proc
- 選択されたファイルがディレクトリならディレクトリ移動をしファイルなら読み
- 込み処理をします
- ;--- not_bar proc
- 選択されたファイル名を反転表示します
- ;--- entry_2 proc
- 色設定メニューを表示します
- ;--- entry_palette proc
- テキストのパレットを変更します
- ;--- entry_3 proc
- 移動メニューを表示します
- ;--- entry_jump proc
- 移動メニューのアイテムを処理します
- ;--- entry_4 proc
- 書式メニューを表示します
- ;--- entry_tab proc
- タブ変更を行います
- ;--- entry_crtc proc
- 画面サイズの変更を行います
- ;--- change_crtc proc
- CRTCレジスタを変更します
- ;--- entry_crlf proc
- 改行表示の選択を行います
- ;---- entry_80 proc
- 80行表示の選択を行います
- ;--- entry_5 proc
- 情報メニューの処理をします
- ;--- entry_6 proc
- 終了メニューの処理をします
- ;--- set_item_field proc
- ルートメニューの表示位置によってサブメニューの表示される位置を計算します
- ;--- display_title proc
- スタートタイトルを表示します
- ;--- draw_center_bar proc
- 中央のバーを表示します
- ;--- clear_crtc proc
- CRTCレジスタを変更します
- ;--- read_font proc
- 12ドットフォントを読み込みます
- ;--- read_file proc
- 選択されたファイルを読み込み,最初の行と最終行のポインタをセットして
- テキストを表示します
- ;--- check_drive proc
- now_drvで示されたドライブが交換可能な時,そのドライブにディスクがセット
- されているかどうかチェックします
- ;--- overflow proc
- ファイルがすべて読み込めなかった時のメッセージを表示します
- ;--- text_treatment proc
- テキストを表示する前の前処理をします。各行の開始オフセットアドレスを
- バッファに格納します
- ;--- put_text proc
- テキストを表示します
- ;--- put_cr_mark proc
- 改行を示す ↓ を表示します
- ;--- set_color proc
- テキストの前景色,背景色を設定します
- ;--- put_ank proc
- テキストの ANK文字を表示します
- ;--- put_kan proc
- テキストの 2バイト文字を表示します
- ;--- put_next_words proc
- 上スクロ~ルのときの次の 1行を表示します
- ;--- put_back_words proc
- 下スクロ~ルのときの次の 1行を表示します
- ;--- up_scroll proc
- 上スクロ~ルさせます
- ;--- down_scroll proc
- 下スクロ~ルさせます
- ;--- set_palette proc
- パレットを設定します
- ;--- font_ank_col proc
- 文字色:dword,背景色:dwordの順にPUSHした後コールします。
- ;--- font_kan_col proc
- 文字色:dword,背景色:dwordの順にPUSHした後コールします。
- ;--- font_ank proc
- esiにX座標:word,Y座標:word,文字数:dword, 文字格納番地:dwordの順で格納
- させれている番地をセットしてコール。文字数に0をセットすると文字列すべて
- を表示
- ;--- font_kan proc
- esiにX座標:word,Y座標:word,文字数:dword,文字格納番地:dwordの順で格納
- させれている番地をセットしてコール。漢字 1文字につき 2文字と数える
- ;--- font_10 proc
- font_ank_colで設定した色でeaxの値を10進数 8桁で表示します
- ;--- div_10 proc
- font_10プロシージャよりコールされます
- ;--- font_mix proc
- esiにX座標:word,Y座標:word,文字数:dword, 文字格納番地:dwordの順で格納
- させれている番地をセットしてコール。文字をANK文字,2バイト文字問わず表示
- します
- ;--- draw_h_line proc
- 垂直線を描きます。esiにx1:word, y1:word, x2:word, y2:word, off_x:word
- (X座標オフセット), off_y:word(Y座標オフセット), color:word
- 以下のグラフィック関数はw_page:dwordに 0を書き込むとレイア 0,40000h
- を書き込むとレイア 1に書き込みます
- ;--- draw_w_line proc
- 水平線を描きます。esiにx1:word, y1:word, x2:word, y2:word, off_x:word,
- off_y:word, color:word
- ;--- draw_boxful proc
- 矩形を描きます。esiにx1:word, y1:word, x2:word, y2:word, off_x:word,
- off_y:word, color:word
- ;--- draw_box proc
- 枠線を描きます。esiにx1:word, y1:word, x2:word, y2:word, off_x:wprd,
- off_y:word, color:word
- ;--- draw_button proc
- ボタンを描きます。esiにx1:word, y1:word, x2:word, y2:word, off_x:word,
- off_y:word, opt:word( optが 1なら引っ込んだ状態,0なら出っ張った状態)
- ;--- get_image proc
- x1:word,y1:word,x2:word,y2:wordの順にPUSHしたあとコール
- 格納できるイメージデータの個数はIMAGE_NUM_MAXに定義してあり,格納できる
- イメージデータのトータルサイズはIMAGE_SIZEに定義してあります。イメージ
- データ格納に失敗したらキャリーフラグをセットします
- 以上全て, x1<=x2, y1<=y2でなければなりません
- ;--- put_image proc
- get_imageで格納したイメージデータを復帰します。最後に格納した順に復帰
- します
- ;--- wait_vsync proc
- 垂直帰線期間になるまでループします
- ;--- wait_hsync proc
- 水平帰線期間になるまでループします
- ;--- sleep proc
- 時間待ちをします。ecxに値(1~99 10ms単位)をセットしてコールします
- ;--- debug proc
- ランニングデバッグルーチン。ドライブ0のアクセスランプを 900msの間
- 点灯させます
-
- *** variables ***
-
- scroll.speed スクロ~ルスピード値が入ります。指定された値分だけHSYNC
- ループを行います
- scroll.off_adr CRTCレジスタ17番のFA0の値が入っています
- ptword.off_adr CRTCレジスタ17番のFA0の値が入っています
- ptword.now_line 現在表示されているテキストの画面右下の行番号が入っています
- real_mem db 32 dup( 0 ) リアルBIOS呼び出す時に使っています
- r_reg label far
- r_int dw 0
- r_ds dw 0
- r_es dw 0
- r_fs dw 0
- r_gs dw 0
- r_eax dd 0
- r_edx dd 0 ここまで
- image_num db 0 現在保存されているイメージデータの個数が入ります
- cr_disp db ON 改行表示するならONしないならOFFが入ります
- mos_disp db ON マウスカーソルを表示するならONしないならOFFが入ります
- moustat db 00110000b マウスの状態を読む時に使います
- int_slave db ? 割り込みレジスタの値が保存されています
- rvsync_off dd ? リアル側のVSYNC割り込みアドレスが保存されています
- pointer dd ? 各行の先頭アドレスを保存するバッファの基底アドレスが
- 入っています
- buff dd ? テキストを保存するバッファの基底アドレスが入っています
- memory dd ? 空きメモリの容量が入っています
- file_size dd 0 読み込んだファイルの大きさが入ります
- max_line dd 0 読み込んだテキストの行数が入ります
- def_max_line dd 0 読み込めるテキストの行数の最大値が入ります
- text_line dd ? put_text procのローカル変数として使われています
- add_ebx dd 4, 3, 2, 1, 0, 0, 0, 0 タブの時いくつ文字数を進めるかが
- 入っています
- add_edi dd 12, 9, 6, 3, 0, 0, 0, 0 タブの時いくつVRAMアドレスを進め
- るかが入っています
- tab_wide dd 3 現在のタブ幅 - 1が入ります
- r_line dd 328/2 上スクロ~ルの時転送するラインのオフセットアドレス
- が入ります
- max_str dd 52 現在の 1行に表示できる最大文字数が入ります
- l_count_1 dd 39 文字を書く前に何バイト分背景色で塗り潰すかの値が入って
- います
- l_count_2 dd 512-156 1つ下の塗り始めのアドレスまでのバイト数が入ってい
- ます
- w_page dd 40000h 40000hならグラフィックをレイア 1に書き込む,0なら
- レイア 0に書き込む
- back_ground dd 60 dup( 0cccccccch ) 塗る潰す背景色データ
- function dd function_1, function_2, function_3, function_4
- 呼び出されるプロシージャのアドレスが入っています
- jmp_tbl_1 dd ank_ok_1, chk_kan_1 間接ジャンプのジャンプ先アドレス
- jmp_tbl_2 dd ank_ok_1, kan_ok_1
- jmp_tbl_3 dd ank_ok_2, chk_kan_2
- jmp_tbl_4 dd ank_ok_2, kan_ok_2
- jmp_tbl_5 dd ank_ok_3, chk_kan_3
- jmp_tbl_6 dd ank_ok_3, kan_ok_3 ここまで
- h_size dd 640/2 現在の表示領域を 2で割った値
- bar_x dd 640/2-8 中央のバーが表示される位置
- align 4
- now_mos_x_pos dd 284/2 1つ前のマウスの座標
- now_mos_y_pos dd 160 1つ前のマウスの座標
- old_mos_x_pos dd 284/2 保存されている背景の座標
- old_mos_y_pos dd 160 保存されている背景の座標
- new_mos_x_pos dd 284/2 現在のマウスの座標
- new_mos_y_pos dd 160 現在のマウスの座標
- max_mos_x_pos dd 624/2 マウスの最大移動範囲
- max_mos_y_pos dd 464 マウスの最大移動範囲
- min_mos_x_pos dd 0 マウスの最小移動範囲
- mos_button db 0 マウスのボタン状態が入ります。 0ならクリックして
- いない, 1なら左クリック, 2なら右クリック,左右
- 同時クリックというのはありません
- ptn_offset dd 0 どのマウスカーソルの形状を表示するかの値が入ります
- back_image db 128 dup( ? ) マウスが表示されている背景のデータが入ります
- eighty db OFF OFFなら80行表示する,ONならしない
- catch db OFF OFFならマウスが画面を掴んでいる,ONなら掴んでいない
- first_y dd 0 マウスの Y座標の保存
- second_y dd 0 マウスの Y座標の保存
- vram_line dd 0 トータルスクロ~ルライン数
- scroll_off dw 0 何ドット右に横スクロ~ルしたか
- ptn_chg_1 db 00000000b, 00001111b, 11110000b, 11111111b
- ptn_chg_2 db 10001000b, 10001111b, 11111000b, 11111111b
- マウスのビットイメージから16色イメージへの変換用データ
- path db 16 dup( 0 ) 読み込んだファイルのパス名が入る
- changeable db 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1
- それぞれがA~Qドレイブに対応していて 0ならばそのドライブ
- は接続されていない, 1ならフロッピィのような交換可能ドライ
- ブ, 2ならハードディスクのような交換不能ドライブ
- file_pnt dw 9 現在何番目のファイルを表示しているか
- file_num dw 0 該当したファイルの個数
- file file_dat FILE_MAX dup ( ? ) 各ファイルの各情報を保存している
- バッファ
- now_drv db ? 現在のカレントドライブ
- now_dir db 65 dup( ? ) 現在のカレントディレクトリ
- current_drv db ? 起動時のカレントドライブ
- current_dir db 65 dup( ? ) 起動時のカレントディレクトリ
- path_list db 64 dup( 0 ) 現在のディレクトリのフルパスが入る
- mark dd 7 dup( 0ffffffffh ) 登録された移動先の先頭行アドレスが入る
- strptn db FNT_BUF_SIZ dup( 0 ) 12ドットフォントデータが入る
- image_xy image_dat IMAGE_NUM_MAX dup( < 0, 0, 0, 0 > )
- 格納されているイメージデータの座標が入る
- image_pnt dd (IMAGE_NUM_MAX+1) dup( image_buff )
- 格納されているイメージデータのバッファアドレスが入る
- image_buff db IMAGE_SIZE dup( 0 )
- 格納されているイメージデータが入る
-